/* Make the structure name match the typedef. */
typedef struct bar {
	int	level;
} BAR;
typedef int		foo;	/* This is foo. */
typedef const long	baz;	/* This is baz. */


static char	*function(int _arg, const char *_arg2, struct foo *_arg3,
		    struct bar *_arg4);
static void	 usage(void);

/*
 * All major routines should have a comment briefly describing what
 * they do.  The comment before the "main" routine should describe
 * what the program does.
 */
int
main(int argc, char *argv[])
{
	char *ep;
	long num;
	int ch;

	while ((ch = getopt(argc, argv, "abNn:")) != -1)
		switch (ch) {		/* Indent the switch. */
		case 'a':		/* Don't indent the case. */
			aflag = 1;	/* Indent case body one tab. */
			/* FALLTHROUGH */
		case 'b':
			bflag = 1;
			break;
		case 'N':
			Nflag = 1;
			break;
		case 'n':
			num = strtol(optarg, &ep, 10);
			if (num <= 0 || *ep != '\0') {
				warnx("illegal number, -n argument -- %s",
				    optarg);
				usage();
			}
			break;
		case '?':
		default:
			usage();
			/* NOTREACHED */
		}
	argc -= optind;
	argv += optind;

	for (p = buf; *p != '\0'; ++p)
		;	/* nothing */
	for (;;)
		stmt;
	for (;;) {
		zed = a + really + long + statement + that + needs +
		    two + lines + gets + indented + four + spaces +
		    on + the + second + and + subsequent + lines;
	}
	for (;;) {
		if (cond)
			stmt;
	}
	if (val != NULL)
		val = realloc(val, newsize);

        fcn_call(with, a, really, long, list, of, parameters,
                 that, spans, two, lines);

	for (; cnt < 15; cnt++) {
		stmt1;
		stmt2;
	}

        almod = (chunk_is_single_line_comment(pc) &&
                cpd.settings[UO_indent_relative_single_line_comments].b) ?
            ALMODE_KEEP_REL : ALMODE_KEEP_ABS;

	/* Indentation is an 8 character tab.  Second level indents are four spaces.
	 * If you have to wrap a long statement, put the operator at the end of the
	 * line.
	 */

	while (cnt < 20 && this_variable_name_is_too_long &&
	    ep != NULL)
		zappy = a + really + long + statement + that + needs
		    + two + lines + gets + indented + four + spaces +
		    on + the + second + and + subsequent + lines;

   // Do not add whitespace at the end of a line, and only use tabs followed by
   // spaces to form the indentation.  Do not use more spaces than a tab will
   // produce and do not use spaces in front of tabs.
   //
   // Closing and opening braces go on the same line as the else.  Braces that
   // are not necessary may be left out.

	if (test)
		stmt;
	else if (bar) {
		stmt;
		stmt;
	} else
		stmt;

        // No spaces after function names.  Commas have a space after them.  No spa-
        // ces after `(' or `[' or preceding `]' or `)' characters.

	error = function(a1, a2);
	if (error != 0)
		exit(error);

        // Unary operators do not require spaces, binary operators do.  Do not use
        // parentheses unless they are required for precedence or unless the state-
        // ment is confusing without them.  Remember that other people may confuse
        // easier than you.  Do YOU understand the following?

	a = b->c[0] + ~d == (e || f) || g && h ? i : j >> 1;
	k = !(l & FLAGS);


        // Exits should be 0 on success, or 1 on failure.

	exit(0);	   /*
			    * Avoid obvious comments such as
			    * "Exit 0 on success."
                            */
}

static char *
     function(a1, a2, fl, a4)
	     int a1, a2;     /* Declare ints, too, don't default them. */
	     float fl;	     /* Beware double vs. float prototype differences. */
	     int a4;	     /* List in order declared. */
     {
     }
